package com.luoguijia.disk.files.service;

import com.luoguijia.disk.files.entity.SearchFileEntity;
import com.luoguijia.disk.mybatis.entity.PtFileEntity;
import com.luoguijia.disk.mybatis.flexigrid.PagingEntity;
import com.luoguijia.disk.mybatis.flexigrid.TblResponseEntity;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;


public interface FileService {
    /**
     * 生成文件分享链接
     * @param fileId 文件ID
     * @return 分享链接
     */
    String generateShareLink(String fileId);
    // 逻辑删除文件
    boolean logicDeleteFile(String fileId);
    String uploadFile(MultipartFile file);// 定义文件上传方法，返回值可根据需求调整，比如返回上传后的文件路径等
    public void saveFileInfo(List<PtFileEntity> ptFileEntityList);
    //文件类型返回
    List<PtFileEntity> getFileList();

//    //根据文件类型字符串获取内容类型
//    PtFileEntity getFileById(String fileId);

    // 文件查询方法
    PtFileEntity getFileById(String fileId);

    /**
     * 分页查询文件列表
     * @param entity
     * @param paging
     * @return
     */
    TblResponseEntity<PtFileEntity> queryFileInfoListByPage(SearchFileEntity entity, PagingEntity paging);

 /*   *//**
     * 查询文件信息
     * @param fileUuid
     * @return
     *//*
    PtFileEntity queryFileInfoById(String fileUuid);*/

    /**
     * 查询所有文件列表
     * @return
     */
    List<PtFileEntity> queryFileListAll();

    /**
     * 分页查询回收站文件列表
     * @param entity
     * @param paging
     * @return
     */
    TblResponseEntity<PtFileEntity> queryRecycleFileListByPage(SearchFileEntity entity, PagingEntity paging);

    /**
     * 从回收站恢复单个文件
     * @param fileId
     * @return
     */
    boolean restoreFileFromRecycle(String fileId);

    /**
     * 永久删除单个文件
     * @param fileId
     * @return
     */
    boolean permanentlyDeleteFile(String fileId);

    /**
     * 批量从回收站恢复文件
     * @param fileIds
     * @return
     */
    boolean batchRestoreFromRecycle(String[] fileIds);

    /**
     * 批量永久删除文件
     * @param fileIds
     * @return
     */
    boolean batchPermanentlyDelete(String[] fileIds);

    /**
     * 删除文件
     * @param ids
     */
    void deleteFileByIds(String ids);




    //查询文件通过文件名q
    /**
     * 查询文件信息
     * @param fileUuid
     * @return
     */
    PtFileEntity queryFileInfoById(String fileUuid);


    /**
     * 修改文件信息q
     * @param entity
     */
    void modifyFileInfoById(PtFileEntity entity);



}




